A [LangOptions] section is used to define the language-specific settings, such as fonts, used by the Setup program and uninstaller. Normally, you need not create a [LangOptions] section in your script file, since the language-specific settings are, by default, pulled in from the file Default.isl included with Inno Setup (or whichever file is specified by a [Languages] section entry).
The following is an example of a [LangOptions] section. (The settings listed below are the defaults.)
[LangOptions] LanguageName=English LanguageID=$0409 LanguageCodePage=0 DialogFontName= DialogFontSize=8 WelcomeFontName=Verdana WelcomeFontSize=12 TitleFontName=Arial TitleFontSize=29 CopyrightFontName=Arial CopyrightFontSize=8
LanguageName is the native name of the language (so not the English name). It is displayed in the list of available languages on the Select Language dialog in a multilingual installation. It is internally stored as a Unicode string (and on NT-based platforms, displayed as such). To embed Unicode characters, use "<nnnn>", where "nnnn" is the 4-digit hexadecimal Unicode character code. You can find Unicode character codes of characters using the Character Map accessory included with Windows 2000 and later.
LanguageID is the numeric "language identifier" of the language. Refer to the list of valid language identifiers on MSDN. This, along with LanguageCodePage, is used for the purpose of auto-detecting the most appropriate language to use by default, so be sure it is set correctly. It should always begin with a "$" sign, since language identifiers are in hexadecimal. If no language identifier currently exists for the language, set this to zero.
LanguageCodePage specifies the "code page" (character set) needed to display the language. When auto-detecting the most appropriate language to use by default, it only considers languages whose LanguageCodePage values match the system code page.
In addition, when populating the list of available languages on the Select Language dialog in a multilingual installation, it likewise only considers languages whose LanguageCodePage values match the system code page (except if ShowUndisplayableLanguages is set). The goal of this is to hide languages that can't be displayed properly on the user's system. For example, Russian text can't be displayed properly unless the code page is 1251, so there is little reason to list Russian as an option if the system is running in a different code page.
If LanguageCodePage is set to 0, the language will always be considered, regardless of the system code page. It makes sense to use 0 on languages that contain pure ASCII, such as English, since ASCII is identical across all code pages.
DialogFontName and DialogFontSize specify the font name and point size to use in dialogs. If the specified font name does not exist on the user's system or is an empty string, 8-point Microsoft Sans Serif or MS Sans Serif will be substituted.
WelcomeFontName and WelcomeFontSize specify the font name and point size to use at the top of the Welcome and Setup Completed wizard pages. If the specified font name does not exist on the user's system or is an empty string, 12-point Microsoft Sans Serif or MS Sans Serif will be substituted.
TitleFontName and TitleFontSize specify the font name and point size to use when displaying the application name on the background window (only visible when WindowVisible=yes). If the specified font name does not exist on the user's system, 29-point Arial will be substituted. If the specified font name is an empty string, 29-point Microsoft Sans Serif or MS Sans Serif will be substituted.
CopyrightFontName and CopyrightFontSize specify the font name and point size to use when displaying the AppCopyright message on the background window (only visible when WindowVisible=yes). If the specified font name does not exist on the user's system, 8-point Arial will be substituted. If the specified font name is an empty string, 8-point Microsoft Sans Serif or MS Sans Serif will be substituted.
In cases where there are multiple [Languages] section entries, specifying a [LangOptions] section directive in your script (as opposed to an .isl file) will by default override that directive for all languages. To apply a [LangOptions] section directive to only one language, prefix it with the language's internal name followed by a period. For example:
en.LanguageName=English